3D Deep Learning 入門(一)- Deep learning on regular structures


Posted by Po-Jen on 2020-10-18

前言

3D Deep Learning 的應用很廣泛,相關的研究也越來越多,要追上這些研究不是一朝一夕就能做到,但只要持之以恆,也能跟上,今天要透過 CVPR 2017 的 3D Deep Learning tutorial 影片來入門,因為整個 tutorial 長達三個小時,所以我把文章切成三份,今天是第一份 - 如何對具有 regular structure 的 3D data 做 deep learning。

這是 CVPR 2017 3D Deep Learning tutorial 的影片,想深入看完的讀者可以參考:

CVPR 2017 3D Deep Learning Tutorial

3D data 的應用

首先,我們知道 3D data 現在的應用很廣泛,尤其在蓬勃發展的自駕車和 AR/VR 領域:

再加上近年來 Deep Leanrning 正夯,這也就促成了 3D Deep Learning 的相關研究。

3D DL 研究問題的大致分類

3D DL 研究問題可以大致分成三類:

  1. 3D geometry analysis:例如辨識一坨 3D data 是什麼物體、辨識一坨 3D data 由哪些部分組成、3D data registration 等等
  2. 3D-assisted image analysis:利用 3D data 來輔助 image 分析,例如 cross-view image retrieval、intrinsic decomposition 問題。
  3. 3D systhesis:例如從一張照片產生出 3D data,或是從殘缺的 data 還原出完整的 data。

3D data representation

3D data 跟 2D image 的一個重要不同之處在於,3D data 有很多種 representation 的方法,所以在研究 3D DL 問題時,多了一個自由度(如果你是 researcher,今天想要辨識一個 3D data 是什麼物體,你會選什麼表示法來達到最好的 accuracy 呢?):

如果要分類的話,大致又有兩類:

所以就產生了很豐富的各種研究:

最直覺的想法,我們能否做 3D CNN?

如果是 rasterized form(有固定的結構),就可以做,不過會有其他挑戰,之後會說明:

如果是 irregular form,那當然就沒辦法:

Multi-view representation 的研究介紹

Multi-view representation 的基本想法有點像反向的 structure from motion,用很多張 2D image 儲存 3D 資訊:

Classification - Multi-view CNN

首先,讓我們來看看 classification 問題吧。

這個部分要介紹的研究是 Multi-view CNN,基本概念是,我們可以把一個 3D model 從很多個角度各拍一張照,利用這多張影像中來產生一個 feature vector,再用一個 softmax 層得到各種 class 的機率:

要怎麼產生 feature vector 呢?最直覺的做法當然就是 CNN,而 MVCNN 就分別讓 12 張影像都各自通過一個 CNN:

看到這邊可能會有一個問題,這個方法能做到 orientation-invariant 嗎?他們的做法是讓 CNN_1 的每個 branch 都 share 同樣的 parameters,讓 CNN 自己想辦法學到 orientation-invariant 的 feature。

MVCNN 在當時也算是 state-of-the-art 的方法:

Part segmentation - Projective CNN

接下來要討論的問題是 part segmentation,這個問題的目的是要把物體中的各組成部分切出來:

有一種做法跟 MVCNN 的概念很像,就是從很多不同的角度去拍 3D Shape,然後分別通過各自的 FCN,投影到同樣的 surface,之後再切出各個 part:

其中 FCN 的架構是長這樣:

這個方法有一些缺點,像太多張圖會有 redundancy、slow to train 等等:

Multi-view representation 的一些研究難點

Volumetric representation 的研究介紹

Volumetric representation 的常見來源

因為是 volumetric,做 3DCNN 就很直覺

3DCNN 的方法因為 voxelize 後的 loss,不敵 MVCNN

下圖中的 3DShapeNet 跟 VoxNet 都是 3DCNN 的方法:

太 sparse 也是個問題

以下圖來說,最右邊的 voxel grids 有最高的 resolution,但其中只有 2.41% 的 grid 有 data:

你想想看如果你做 3D CNN,但有一堆 weight 接到的 input data 是空的,那這樣是不是很難 train?

一個較 compact 的 representation - Octree

所以有研究者想到可以用 octree 來儲存 input,藉此解決資料太 sparse 的問題:

octree 的表示法也產生了一些研究 - O-CNN、OctNet

但因為 octree 中的 neighbor 不是空間中的 neighbor,所以需要更多實作上的技巧

似乎還有很多深入的細節可以探討,如果你有興趣可以去看看 paper。

O-CNN 以結果來說,比直接做 3DCNN 還要好

總結

今天帶大家從很基礎的地方入門了 3D Deep Learning,上面的總結算是很簡短,如果你對詳細內容有興趣,可以再去看看影片、甚至是上面提到的 paper。

之後會再 po 出第二和第三部分,要注意的一點是,上面提到的觀念是在 2017 年的研究小結,也許三年後的現在已經有些結論不同了,不過能夠從 2017 年一路追到最新的研究,才比較容易有整體觀,也容易了解各個方法的演進跟優缺點變化,對於以後自己要開發新的演算法也更有幫助。

等到三個部分分享完後,未來有機會也想深入分享更多厲害的研究,例如 PointPillars、PointFusion 、Voxel-FPN 等等,3D DL 讚讚讚,stay tuned,我們下次見!

延伸閱讀

  1. 3D Deep Learning 入門(二)- Deep learning on point cloud
  2. Multi-view Convolutional Neural Networks for 3D Shape Recognition
  3. 3D Shape Segmentation with Projective Convolutional Networks
  4. 3D Shape Reconstruction from Sketches via Multi-view Convolutional Networks
  5. 3D ShapeNets: A Deep Representation for Volumetric Shapes
  6. OctNet: Learning Deep 3D Representations at High Resolutions

#Deep Learning









Related Posts

HTB Timelapse Walkthrough

HTB Timelapse Walkthrough

Day04 你知道 setTimout、setInterval、requestAnimationFrame API 三者的關係嗎

Day04 你知道 setTimout、setInterval、requestAnimationFrame API 三者的關係嗎

Beaglebone Black 刷新 EMMC 筆記

Beaglebone Black 刷新 EMMC 筆記




Newsletter




Comments